import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class FileInputCode {
    public static void main(String[] args) throws IOException {
//        FileInputStream fos = new FileInputStream("IoCode\\javaFile\\a.txt");
//        //读取一个数据
//        int b1 = fos.read();
//        System.out.println(b1);
//        int b2 = fos.read();
//        System.out.println(b2);
//        int b3 = fos.read();
//        System.out.println(b3);
//        int b4 = fos.read();
//        System.out.println(b4);
//        int b5 = fos.read();
//        System.out.println(b5);
//        int b6 = fos.read();
//        System.out.println(b6);
//        fos.close();

//        如何循环读取
//        int b;
//        每次读取就是移动指针 到指针移动到没有字符的位置进行读取 则会返回-1
//        int bnum=fos.read();
//        System.out.println(bnum);
//        while((b = fos.read()) != -1){
//            System.out.println(b+"=b");
//        }
//        System.out.println("读取完成");
//        fos.close();


//        文件拷贝
        /**
         * 使用read方法 一次读取一个字节 写入一个字节
         * 拷贝速度 很慢
         * 可以使用数组 一次读取多个字节 写入多个字节
         * */
//        FileInputStream fi1 = new FileInputStream("C:\\Users\\Administrator\\Desktop\\image\\OnePice1.jpg");
//        FileOutputStream fi2= new FileOutputStream("IoCode\\javaFile\\OnePiceCopy1.jpg");
//        FileInputStream fi3 = new FileInputStream("C:\\Users\\Administrator\\Desktop\\image\\ce13e62801afd7d90b60469c6c76df831.jpeg");
//        FileOutputStream fi4 = new FileOutputStream("IoCode\\javaFile\\copyLiFaShi1.jpeg");
//        一次读取一个字节 写入一个字节
//        int b;
//        while((b = fi1.read()) != -1){
//            fi2.write(b);
//        }
//        fi1.close();
//        fi2.close();
//        一次读取一个字节 写入一个字节
//        while((b = fi3.read()) != -1){
//            fi4.write(b);
//        }
//        fi3.close();
//        fi4.close();


//        使用数组读取字节数据
//        FileInputStream f1 = new FileInputStream("C:\\Users\\Administrator\\Desktop\\image\\OnePice.jpg");
//        FileOutputStream f2 = new FileOutputStream("IoCode\\javaFile\\OnePiceCopy.jpg");
//        byte[] bytes=new byte[1024*1024];
//        int length=f1.read(bytes);
//        while(length != -1){
//            System.out.println(length+"=");
//            f2.write(bytes,0,length);
//            length=f1.read(bytes);
//        }
//        f2.close();
//        f1.close();

//        try catch finally 关闭流
//        finally中的代码无论是否有异常 都会执行
//        除非在try中 或者catch中 或者finally中 调用了System.exit(0);
//        FileInputStream f1=null;
//        FileOutputStream f2=null;
//        try{
//            f1 = new FileInputStream("C:\\Users\\Administrator\\Desktop\\image\\OnePi321321321ce1.jpg");
//            System.out.println(f1+"=f1");
//            f2 = new FileOutputStream("IoCode\\javaFile\\OnePiceCopy.jpg");
//            byte[] bytes=new byte[1024*1024];
//            int length=f1.read(bytes);
//            while(length != -1){
//                f2.write(bytes,0,length);
//                length=f1.read(bytes);
//            }
//        }
//        catch(IOException e){
//            e.printStackTrace();
//        }
//        finally{
//            if(f1 != null){
//                try{
//                    f1.close();
//                }catch(IOException e){
//                    e.printStackTrace();
//                }
//            }
//            if(f2 != null){
//                try{
//                    f2.close();
//                }catch(IOException e){
//                    e.printStackTrace();
//                }
//            }

//        代码简化 jdk7
//        try(FileInputStream fis = new FileInputStream(args[0]);
//            FileOutputStream fos = new FileOutputStream(args[1])){
//            byte[] bytes=new byte[1024*1024];
//            int length=fis.read(bytes);
//            while(length != -1){
//                fos.write(bytes,0,length);
//                length=fis.read(bytes);
//            }
//        }catch(IOException e){
//            e.printStackTrace();
//        }

//        代码简化 jdk9
//        try(FileInputStream fis = new FileInputStream(args[0]);
//            FileOutputStream fos = new FileOutputStream(args[1])){
//            byte[] bytes=new byte[1024*1024];
//            int length=fis.read(bytes);
//            while(length != -1){
//                fos.write(bytes,0,length);
//                length=fis.read(bytes);
//            }
//        }catch(IOException e){
//            e.printStackTrace();
//        }


    }
}
